﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once
#include "GcmpDwgDxfInterface.h"
#include "OwnerPtr.h"

namespace gcmp
{
    class IGraphicsCurve3d;
    class IGraphicsBRepEdge;
    class IGraphicsBRepFace;

    class ICurve3d;
    class ICurve2d;
    class IPolygon;

    /// \brief 消隐线输出结构;
    struct GCMP_DWG_DXF_INTERFACE_EXPORT GcmpHLROutLine
    {
        OwnerPtr<ICurve3d> opCurve3d;                           //三维线数据
        OwnerPtr<ICurve2d> opCurve2d;                           //投影线数据
        const IGraphicsCurve3d* pGraphicsCurve3d = nullptr;      //原始线，模型线投影线有效
        const IGraphicsBRepEdge* pGraphicsBRepEdge = nullptr;    //原始边，边投影线有效
        const IGraphicsBRepFace* pGraphicsBRepFace = nullptr;    //原始面，体交线、轮廓线有效
        ~GcmpHLROutLine();
    };
    typedef OwnerPtr<GcmpHLROutLine> GcmpHLROutLinePtr;

    /// \brief 消隐区域输出结构;
    struct GCMP_DWG_DXF_INTERFACE_EXPORT GcmpHLROutRegion
    {
        OwnerPtr<IPolygon> opPolygon;                           //投影多边形数据
        const IGraphicsBRepFace* pGraphicsBRepFace = nullptr;    //原始面
        ~GcmpHLROutRegion();
    };
    typedef OwnerPtr<GcmpHLROutRegion> GcmpHLROutRegionPtr;
}